package org.syg.generator.util;

import freemarker.template.Configuration;
import freemarker.template.Template;
import org.syg.generator.entity.FreemarkerModel;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author ps
 */
public class FreemarkerUtil {
    public static void createFile(FreemarkerModel freemarkerModel, String templateName, String filePath) throws Exception {
        // 通过FreeMarker的Confuguration读取相应的模板文件
        Configuration configuration = new Configuration(Configuration.VERSION_2_3_28);
        // 设置模板路径
        configuration.setClassForTemplateLoading(FreemarkerUtil.class, "/template/");
        // 设置默认字体
        configuration.setDefaultEncoding("utf-8");

        // 获取模板
        Template template = configuration.getTemplate(templateName);
        // 确保文件生成成功
        File file = assertFile(filePath);
        // 设置输出流
        FileWriter out = new FileWriter(file);
        // 模板输出静态文件
        template.process(freemarkerModel, out);

        out.flush();
        out.close();
    }

    /**
     * 确保文件生成成功
     * @param filePath
     * @return
     * @throws IOException
     */
    private static File assertFile(String filePath) throws IOException {
        File file = new File(filePath);
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        if(!file.exists()) {
            file.createNewFile();
            return file;
        }
        return file;
    }
}
